package com.wind.cqboot.plugin;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.wind.cqboot.utils.HttpUtil;

import lombok.extern.slf4j.Slf4j;
import net.lz1998.cq.event.message.CQGroupMessageEvent;
import net.lz1998.cq.robot.CQPlugin;
import net.lz1998.cq.robot.CoolQ;
import net.lz1998.cq.utils.CQCode;

/**
 * 示例插件
 * 插件必须继承CQPlugin，上面要 @Component
 *
 * 添加事件：光标移动到类中，按 Ctrl+O 添加事件(讨论组消息、加群请求、加好友请求等)
 * 查看API参数类型：光标移动到方法括号中按Ctrl+P
 * 查看API说明：光标移动到方法括号中按Ctrl+Q
 */
@Slf4j
@Component
public class UpdatePlugin extends CQPlugin
{
    @Value("${gitee.accessToken}")
    private String accessToken;

    private String giteeUrl = "https://gitee.com/api/v5/repos/zhangmrit/ruoyi-cloud/commits";

    /**
     * 收到群消息时会调用这个方法
     *
     * @param cq    机器人对象，用于调用API，例如发送群消息 sendGroupMsg
     * @param event 事件对象，用于获取消息内容、群号、发送者QQ等
     * @return 是否继续调用下一个插件，IGNORE表示继续，BLOCK表示不继续
     */
    @Override
    public int onGroupMessage(CoolQ cq, CQGroupMessageEvent event)
    {
        // 获取 消息内容 群号 发送者QQ
        String msg = event.getMessage();
        long groupId = event.getGroupId();
        if (msg.contains(CQCode.at(cq.getSelfId())))
        {
            // 回复内容为 at发送者 + hi
            if (msg.contains("更新"))
            {
                String result = getUploadRecord();
                // 调用API发送消息
                cq.sendGroupMsg(groupId, result, false);
                // 不执行下一个插件
                return MESSAGE_BLOCK;
            }
        }
        // 继续执行下一个插件
        return MESSAGE_IGNORE;
    }

    /**
     * 
     * @return
     * @author zmr
     */
    private String getUploadRecord()
    {
        String result = "";
        String rspStr = HttpUtil.sendGet(giteeUrl, "access_token=" + accessToken + "&page=1&per_page=5");
        try
        {
            JSONArray data = JSON.parseArray(rspStr);
            result += "最新5次更新内容为：\r\n";
            for (int i = 0; i < data.size(); i++)
            {
                JSONObject jo = data.getJSONObject(i);
                result += (i + 1) + "." + jo.getJSONObject("commit").getString("message") + "\r\n";
            }
        }
        catch (Exception e)
        {
            log.error("获取更新记录出错{}", e);
        }
        return result;
    }
}
